var arrayEspeciales = new Array();

    arrayEspeciales.push(String.fromCharCode(8215));
    arrayEspeciales.push(String.fromCharCode(96)); 
    arrayEspeciales.push(String.fromCharCode(305)); 
    arrayEspeciales.push(String.fromCharCode(126)); 
    arrayEspeciales.push(String.fromCharCode(163)); 
    arrayEspeciales.push(String.fromCharCode(164)); 
    arrayEspeciales.push(String.fromCharCode(165)); 
    arrayEspeciales.push(String.fromCharCode(167)); 
    arrayEspeciales.push(String.fromCharCode(168)); 
    arrayEspeciales.push(String.fromCharCode(169)); 
    arrayEspeciales.push(String.fromCharCode(170)); 
    arrayEspeciales.push(String.fromCharCode(171)); 
    arrayEspeciales.push(String.fromCharCode(172)); 
    arrayEspeciales.push(String.fromCharCode(174)); 
    arrayEspeciales.push(String.fromCharCode(9617)); 
    arrayEspeciales.push(String.fromCharCode(9618)); 
    arrayEspeciales.push(String.fromCharCode(9618)); 
    arrayEspeciales.push(String.fromCharCode(179)); 
    arrayEspeciales.push(String.fromCharCode(178)); 
    arrayEspeciales.push(String.fromCharCode(9474)); 
    arrayEspeciales.push(String.fromCharCode(9508)); 
    arrayEspeciales.push(String.fromCharCode(181)); 
    arrayEspeciales.push(String.fromCharCode(182)); 
    arrayEspeciales.push(String.fromCharCode(183)); 
    arrayEspeciales.push(String.fromCharCode(184)); 
    arrayEspeciales.push(String.fromCharCode(9571)); 
    arrayEspeciales.push(String.fromCharCode(185)); 
    arrayEspeciales.push(String.fromCharCode(9553)); 
    arrayEspeciales.push(String.fromCharCode(9559)); 
    arrayEspeciales.push(String.fromCharCode(187)); 
    arrayEspeciales.push(String.fromCharCode(9565)); 
    arrayEspeciales.push(String.fromCharCode(9488)); 
    arrayEspeciales.push(String.fromCharCode(9492)); 
    arrayEspeciales.push(String.fromCharCode(9524)); 
    arrayEspeciales.push(String.fromCharCode(9516)); 
    arrayEspeciales.push(String.fromCharCode(9500)); 
    arrayEspeciales.push(String.fromCharCode(9472)); 
    arrayEspeciales.push(String.fromCharCode(9532)); 
    arrayEspeciales.push(String.fromCharCode(198)); 
    arrayEspeciales.push(String.fromCharCode(9562)); 
    arrayEspeciales.push(String.fromCharCode(9556)); 
    arrayEspeciales.push(String.fromCharCode(9577)); 
    arrayEspeciales.push(String.fromCharCode(9574)); 
    arrayEspeciales.push(String.fromCharCode(9568)); 
    arrayEspeciales.push(String.fromCharCode(9552)); 
    arrayEspeciales.push(String.fromCharCode(9580)); 
    arrayEspeciales.push(String.fromCharCode(208)); 
    arrayEspeciales.push(String.fromCharCode(213)); 
    arrayEspeciales.push(String.fromCharCode(216)); 
    arrayEspeciales.push(String.fromCharCode(9496)); 
    arrayEspeciales.push(String.fromCharCode(9484)); 
    arrayEspeciales.push(String.fromCharCode(9608)); 
    arrayEspeciales.push(String.fromCharCode(9604)); 
    arrayEspeciales.push(String.fromCharCode(222)); 
    arrayEspeciales.push(String.fromCharCode(9600)); 
    arrayEspeciales.push(String.fromCharCode(223)); 
    arrayEspeciales.push(String.fromCharCode(230)); 
    arrayEspeciales.push(String.fromCharCode(240)); 
    arrayEspeciales.push(String.fromCharCode(245)); 
    arrayEspeciales.push(String.fromCharCode(248)); 
    arrayEspeciales.push(String.fromCharCode(9632)); 
    arrayEspeciales.push(String.fromCharCode(254)); 
    arrayEspeciales.push(String.fromCharCode(160)); //  &nbsp; (espacio sin retorno)
    arrayEspeciales.push(String.fromCharCode(402)); 

(function ($, undefined) {
    $.fn.getCursorPosition = function() {
        var el = $(this).get(0);
        var pos = 0;
        if('selectionStart' in el) {
            pos = el.selectionStart;
        } else if('selection' in document) {
            el.focus();
            var Sel = document.selection.createRange();
            var SelLength = document.selection.createRange().text.length;
            Sel.moveStart('character', -el.value.length);
            pos = Sel.text.length - SelLength;
        }
        return pos;
    }
})(jQuery);

(function ($) {$.fn.disableSelection = function () {return this.each(function () {if (typeof this.onselectstart != 'undefined') {this.onselectstart = function() { return false; }; } else if (typeof this.style.MozUserSelect != 'undefined') {this.style.MozUserSelect = 'none'; } else {this.onmousedown = function() { return false; }; } }); }; })(jQuery);

function fbtnover(btn , klass){
       if(btn.className!="BotonDisabled"){
               switch(klass){
                       case 100:btn.className="BotonHover";break;
                       case 120:btn.className="Boton120Over";break;
                       case 180:btn.className="Boton180Over";break;
               }
       }
               
}
function fbtnout(btn , klass){
       if(btn.className!="BotonDisabled"){
               switch(klass){
                       case 100:btn.className="Boton";break;
                       case 120:btn.className="Boton120";break;
                       case 180:btn.className="Boton180";break;
               }
       }
}


/*FUNCIONES GENERALES DE GRILLA*/

function obtenerCeldaFila(objeto,idTabla, idCelda, idTabla2) {              
    var fila = objeto.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.id.replace(idTabla+'fila','');                              
    var celdaValue =  html_entity_decode(getDatoArrayTE(idTabla2, fila, idCelda));              
    return celdaValue;              
}

function obtenerCeldaFilaOculto(objeto,idTabla, idCelda, idTabla2) {                
    var fila = objeto.parentNode.parentNode.parentNode.parentNode.parentNode.parentNode.id.replace(idTabla+'fila','');                              
    var celdaValue =  html_entity_decode(getDatoOcultoArrayTE(idTabla2, fila, idCelda));                
    return celdaValue;
}

/*
*se ingresa titulo que hace referencia al popup, un arrary de parametros y
*la dimensiones que tendra esta popup cuando se muestre
*/
 function lanzarPopup(titulo,parametros,dimensiones){
      url = "/servlet/atad.thin.pres.servlet.AtadSvLanzarFlujo";
      url += getParametros(parametros);
      //alert(url);
      window.open(url,titulo,dimensiones);
 }

/*
*Se ingresa un Array de parametros y se hace la concatenacion mediante el caracter '&'
*esto por el tema que la primera variable va con el caracter '?'
*/
function getParametros(parametros){
    var texto ='';
    for (var i = 0; i < parametros.length; i++) {
        if (i==0) {
            texto +='?';
        }else{
            texto += '&';
        }
        texto += parametros[i];
    }
    return texto;
}


/*
*Se ingresa clave y valor y retorna la concatenacion en formato de parametros
*PARAMETRO1=HOLA
*PARAMETRO2=MUNDO
*/
function formatoParametro(key,valor){
   return key+'='+valor;
}

/*
*Obtiene las dimensiones del popup atraves de un valor
*/
function getTamanioPopup(valor){
   switch(valor){
           case 1:return "width=640,height=420,top=125,left=125";
           case 2:return "width=640,height=420,top=125,left=125";
           case 3:return "width=640,height=420,top=125,left=125";
   }
}

/*
*Retorna el valor de un campo de un popup a otro campo en la ventana padre
*/
function retornaValorVentanapadre(ventanaDestino,campoOrigen,campoDestino){
    var evaluar = "window.opener.document."+ventanaDestino+"."+campoDestino;
    destino = eval(evaluar);
    destino.value = getValorCampo(campoOrigen);
}

/**********FUNCIONES PARA ATAJO CON TECLADO**********/
var metaChar = false; //combinacion de teclas
var exampleKey = 18; // key de la tecla "ALT"
var controlKey = 17; // key de la tecla "CONTROL"

function makeUnselectable(node) {
    if (node.nodeType == 1) {
        node.setAttribute("unselectable", "on");
    }
    var child = node.firstChild;
    while (child) {
        makeUnselectable(child);
        child = child.nextSibling;
    }
}

function unn()
{
if (window.getSelection) {
  if (window.getSelection().empty) {  // Chrome
    window.getSelection().empty();
  } else if (window.getSelection().removeAllRanges) {  // Firefox
    window.getSelection().removeAllRanges();
  }
} else if (document.selection) {  // IE?
  document.selection.empty();
}
}

function atajoKeyDown(event){
  var key = event.keyCode || event.which;
  var keychar = String.fromCharCode(key);

  if (key == exampleKey) 
    metaChar = true;

  if (key != exampleKey) {
    if (metaChar) {
        atajoByCharacter(keychar);      
    } 
  }
  
}

function atajoKeyUp(event){
  var key = event.keyCode || event.which;
  if (key == exampleKey) {
    metaChar = false;
  } 
}

function atajoByCharacter(keychar){
    $("button").filter(function() {
        var letra=$(this).attr("accesskey");
        var letraMayus=$(this).attr("accesskey").toUpperCase();
        var botonNombre=$(this).attr("id");
        if(keychar == letra || keychar == letraMayus){metaChar = false; simulacionClick(botonNombre);}
    });
    
    //if(keychar =='z' || keychar =='Z'){metaChar = false; alert("ALT+Z pressed");} 
    if(keychar =='a' || keychar =='A'){metaChar = false; unn(); makeUnselectable(document.getElementById(''+document.forms[0].id)); }
}

function simulacionClick(boton){
    if(document.getElementById(boton) != undefined){
        var estiloBoton = $("#"+boton).attr("class");
        if(estiloBoton.indexOf("BotonMantenimientoDisabled")>-1){
        }else{
            document.getElementById(boton).click();
        }
    }
}

/**********END FUNCIONES PARA ATAJO CON TECLADO**********/

function asignarEstiloFilaSeleccionada(idTabla, columnasClave, claveFlujo, oculto){
    var filaTabla=0;
    var size=idTabla.length;
    var campos=columnasClave.split(",");
    var claveTabla="";

    $("#TABLA_"+idTabla+" tbody tr").each(function(){
        if($(this).attr("id").substring(0,size)==idTabla){
            //alert(getDatoArrayTE(idTabla,filaTabla,campos[0]));
            claveTabla="";
            for(var i=0; i<campos.length; i++){
                if(oculto=="true"){
                    claveTabla=claveTabla+getDatoOcultoArrayTE(idTabla,filaTabla,campos[i]);
                }else{
                    claveTabla=claveTabla+getDatoArrayTE(idTabla,filaTabla,campos[i]);
                }
            }
            if(claveTabla==claveFlujo){
                $(this).removeClass();
                $(this).addClass("Pijama3");
            }
            filaTabla++;
        }
    });
}

function limpiarGrilla(idTabla){
    var size=idTabla.length;

    $("#TABLA_"+idTabla+" tbody tr").each(function(){
        if($(this).attr("id").substring(0,size)==idTabla){
            $(this).remove();
        }
    });
}

function asignarEstiloFilaSeleccionadaMixta(idTabla, columnasClaveOculta, columnasClaveGrilla, claveOculto, claveTabla){
    var filaTabla=0;
    var size=idTabla.length;
    var camposOcultos=columnasClaveOculta.split(",");
    var camposGrilla=columnasClaveGrilla.split(",");
    var claveTotalTabla="";
    var claveFlujo=$.trim(claveOculto)+""+$.trim(claveTabla);

    $("#TABLA_"+idTabla+" tbody tr").each(function(){
        if($(this).attr("id").substring(0,size)==idTabla){
            //alert(getDatoArrayTE(idTabla,filaTabla,campos[0]));
            claveTotalTabla="";
            for(var i=0; i<camposOcultos.length; i++){
                claveTotalTabla=claveTotalTabla+getDatoOcultoArrayTE(idTabla,filaTabla,camposOcultos[i]);
            }

            for(var j=0; j<camposGrilla.length; j++){
                claveTotalTabla=claveTotalTabla+getDatoArrayTE(idTabla,filaTabla,camposGrilla[j]);
            }

            if(claveTotalTabla==claveFlujo){
                $(this).removeClass();
                $(this).addClass("Pijama3");
            }
            filaTabla++;
        }
    });
}

function setClassObligatorio(){
    var valor = 0;
    $("input.CampoObligatorio, select.CampoObligatorio, textarea.CampoObligatorio").each(function(){
        if($(this).css('display') != "none" && $(this).val()==""){
            $(this).removeClass('CampoObligatorio');
            $(this).addClass('CampoObligatorioError');
            valor++;
        }
    });
    
    if(valor >0){
        return false;
    }else{
        return true;
    }
}

function resetClassObligatorio(){
    $("input.CampoObligatorioError, textarea.CampoObligatorioError, select.CampoObligatorioError").each(function(){
        $(this).removeClass('CampoObligatorioError');
        $(this).addClass('CampoObligatorio');
    });
}

function setValorCampo(identificador,valor){
    document.getElementById(identificador).value = valor;
}

function getValorCampo(identificador){
    return document.getElementById(identificador).value;
}

function lanzarEventoVentana(identificador,codigoHexadecimal){
    setValorCampo('evento',codigoHexadecimal);
    document.forms[identificador].submit();
}

/**
//para <nacar:formulario >
function lanzarEventoVentana(identificador,codigoHexadecimal){
    document.getElementById(identificador).evento.value = codigoHexadecimal;
    document.getElementById(identificador).submit();
}   
**/

function doKeyPress(TP_DATO, event, nroEnteros, nroDecimales){
    var _TP_INTEGER     = 1;
    var _TP_NUMBER          = 2;
    var _TP_DATE            = 3;
    var _TP_ONLYNUMBERSP    = 4;
    var _TP_ONLYLETTERSP    = 5;
    var _TP_ONLYLETTERNUMBERSP  = 6;
    var _TP_RESTRICTIONS    = 7;
    var _TP_ALFANUMERICOANDESPECIAL = 8;
    var _TP_ONLYLETTERNUMBER  = 9;
    var _TP_TODOSMENOSESPECIAL  = 10;

    var tecla; 
    var target;
    var textValue = '';
    
    if (navigator.appName.indexOf("Netscape") != -1){
        tecla = event.which;
        target = event.target;
        if(tecla == 8) return true;
        if(tecla == 0) return true;
    }else{
        tecla = event.keyCode;
        target = event.srcElement;
    }

    textValue = document.getElementById(target.name).value;
    var sCadena    = textValue + String.fromCharCode(tecla);
    var sPatron    = "";
    
    if(TP_DATO == _TP_TODOSMENOSESPECIAL){
        tecla=(event.keyCode) ? event.keyCode : event.which;
        for(var i=0; i<arrayEspeciales.length; i++){
            if(arrayEspeciales[i]==String.fromCharCode(tecla)){
                //alert(String.fromCharCode(tecla));
                return false;
            }
        }
        return true;
    }

    switch (TP_DATO)
    {
       case _TP_INTEGER  : sPatron = /^[\-\+]?\d+$/;                                        break; //1
       case _TP_NUMBER   : sPatron = /^([0-9])*[.]?[0-9]*$/;                                break; //2
       case _TP_DATE     : sPatron = /^\d{1,2}[\/\-]\d{1,2}[\/\-]\d{4}$/;                   break; //3
       case _TP_ONLYNUMBERSP  : sPatron = /^[0-9\ ]+$/;                                     break; //4
       case _TP_ONLYLETTERSP  : sPatron = /^[a-zA-Z\ \']+$/;                                break; //5
       case _TP_ONLYLETTERNUMBERSP  : sPatron = /^[0-9a-zA-Z\ ]+$/;                         break; //6
       case _TP_RESTRICTIONS  : sPatron = /^["'"^'>'^'<'^'%'^'"'^"`"^"^"^"\\"^"["^"]"]+$/;  break; //7
       case _TP_ALFANUMERICOANDESPECIAL  : sPatron = /^[0-9a-zA-Z\ \%]+$/;                  break; //8
       case _TP_ONLYLETTERNUMBER  : sPatron = /^[0-9a-zA-Z]+$/;                         break; //9
    }

    if( !sPatron.test(sCadena) ){
        return false;
    }else{
        if(TP_DATO == _TP_NUMBER){
            // Determinamos si hay decimales o no
            if (textValue.indexOf(".") == -1) {
                // Si no hay decimales, directamente comprobamos que el número que hay ya supero el número de enteros permitidos
                if(sCadena.indexOf(".")!=-1 ){
                    return true;
                }
                if (textValue.length >= nroEnteros) {
                    return false;
                }
            }else{
                // La posición del cursor es la longitud de la selección
                var posCursor = $("#"+target.name).getCursorPosition();
                // Distancia que hay hasta el punto
                var dec = textValue.indexOf(".");
                // Si la posición es anterior a los decimales, el cursor está en la parte entera
                if (posCursor <= dec) {
                    // Obtenemos la longitud que hay desde la posición 0 hasta el punto, y comparamos
                    if (dec >= nroEnteros) {
                        return false;
                    }
                }else{
                    // El cursor está en la parte decimal
                    // Obtenemos la longitud de decimales 
                    //(longitud total menos distancia hasta el punto menos el carácter punto)
                    var numDecimals = textValue.length - dec - 1;
                    if (numDecimals >= nroDecimales) {
                        return false;
                    }
                }
            }
        }
        return true;
    }
 }

function disableCopiarPegarCortar(evt){
    var prohibidos = new Array('c', 'x', 'v');
    var keyCode = (evt.keyCode) ? evt.keyCode : evt.which;
    var isCtrl;
    isCtrl = evt.ctrlKey
    if (isCtrl) {
        for (i = 0; i < prohibidos.length; i++) {
            if (prohibidos[i] == String.fromCharCode(keyCode).toLowerCase()) {
                 return false;
            }
        }
    }
    return true;
}

function verMensaje(codigo, descripcion, rutaKeon, funcion){
    var icono='', tituloMsj=''; // boton='';
    
    if(codigo.substring(0,3).toUpperCase()=="ICA"){
        //mensaje de aviso
        icono=rutaKeon+'Alerta-Check.gif';
        tituloMsj='Información';
        //boton="Aceptar";
    }else if(codigo.substring(0,3).toUpperCase()=="ICE"){
        //error de la aplicación
        icono=rutaKeon+'Alerta-Aspa.gif';
        tituloMsj='Error';
        //boton="Aceptar";
    }else if((codigo.substring(0,7)).toUpperCase()=="CONFIRM"){
        icono=rutaKeon+'Alerta-Interrogante.gif';
        tituloMsj='Pregunta';
    }else if((codigo.substring(0,5)).toUpperCase()=="ALERT"){
        icono=rutaKeon+'Alerta-Exclamacion.gif';
        tituloMsj='Aviso';
    }else{
        //error desconocido
        icono=rutaKeon+'Alerta-Aspa.gif';
        //descripcion='Se ha tenido un error desconocido.' + descripcion;
        tituloMsj='Error';
    }
    if(codigo == ""){
        codigo='SIN CODIGO';
    }
    var popup_height = 116;
    var popup_width = 400;
    var popup_top=($(window).height()-50-popup_height)/2;
    var popup_left=($(window).width()-popup_width)/2;
      
    var htmlMessage=htmlMessage+'<div style="width:100%; height:100%; z-index:999; position:absolute; top:0px; left:0px; background-color:#000000; opacity:0.4; filter: alpha(opacity=40);" >&nbsp;</div>';
        htmlMessage=htmlMessage+'<div id="ventanaMensaje" style=";width:'+popup_width+'px; height:'+popup_height+'px; top:'+popup_top+'px; left:'+popup_left+'px; z-index:1200; position:absolute; background-color:white;'+
                            '-moz-user-select: none; -webkit-user-select: none; -ms-user-select:none;user-select:none;" unselectable="on" onselectstart="return false;" onmousedown="return false;">';
        htmlMessage=htmlMessage+'<table style="width:100%;background-color:white;" border="0" cellspacing="2" cellpadding="2">'+
                                    '<tr>'+
                                            '<td align="center" valign="top" style="background-color:#E5EEFD; width:20%;">'+
                                                    '<table border="0" cellspacing="2" cellpadding="2">'+
                                                            '<tr>'+
                                                                    '<td align="center">'+
                                                                            '<img src="'+icono+'" />'+
                                                                    '</td>'+
                                                            '</tr>'+
                                                            '<tr>'+
                                                                    '<td class="TextoTipoAlerta" align="center" style="height:20px;">'+
                                                                        tituloMsj+
                                                                    '</td>'+
                                                            '</tr>'+
                                                    '</table>'+
                                            '</td>'+
                                            '<td align="left" valign="top" style="background-color:white;">'+
                                                    '<table style="width:100%;" border="0" cellspacing="2" cellpadding="2">'+
                                                            '<tr>'+
                                                                   '<td class="TituloAlerta">';
                                                        if(codigo.substring(0,7).toUpperCase()=="CONFIRM"){
                                                            htmlMessage=htmlMessage+codigo.substring(7,codigo.length);
                                                        }else if(codigo.substring(0,5).toUpperCase()=="ALERT"){
                                                            htmlMessage=htmlMessage+codigo.substring(5,codigo.length);
                                                        }else{
                                                            htmlMessage=htmlMessage+codigo;
                                                        }
                                                htmlMessage=htmlMessage+'</td>'+
                                                            '</tr>'+
                                                            '<tr>'+
                                                                   '<td>'+
                                                                            '<p class="TextoAlerta" style="height:40px;">'+
                                                                                descripcion+
                                                                            '</p>'+
                                                                    '</td>'+
                                                            '</tr>'+
                                                            '<tr>'+
                                                                    '<td align="right">';
                                                                        if(codigo.substring(0,7).toUpperCase()!="CONFIRM" && codigo.substring(0,5).toUpperCase()!="ALERT"){
                                                                            htmlMessage=htmlMessage+'<button type="button" id="btnAlert" name="btnAlert" class="Boton" onclick="'+funcion+'();" '+
                                                                                    'onmouseover="this.className=\'BotonHover\'" accesskey="t" onmouseout="this.className=\'Boton\'">Acep<u>t</u>ar</button>';
                                                                        }else if(codigo.substring(0,5).toUpperCase()=="ALERT"){
                                                                            htmlMessage=htmlMessage+'<button type="button" class="Boton" id="btnAlert" name="btnAlert" onclick="cerrar();" accesskey="t" '+
                                                                                    'onmouseover="this.className=\'BotonHover\'" onmouseout="this.className=\'Boton\'">Acep<u>t</u>ar</button>';
                                                                        }else{
                                                                            htmlMessage=htmlMessage+'<button type="button" class="Boton" id="btnConfirmSi" name="btnConfirmSi" onclick="'+funcion+'();" '+
                                                                                    'onmouseover="this.className=\'BotonHover\'" accesskey="i" onmouseout="this.className=\'Boton\'">S<u>i</u></button>&nbsp;&nbsp;'+
                                                                                    '<button type="button" class="Boton" onclick="cerrar();" id="btnConfirmNo" name="btnConfirmNo" accesskey="n" onmouseover="this.className=\'BotonHover\'" onmouseout="this.className=\'Boton\'"><u>N</u>o</button>';
                                                                        }
                                                                    '</td>'+
                                                            '</tr>'+
                                                    '</table>'+
                                            '</td>'+
                                    '</tr>'+
                                 '</table>'+
                                 '</div>';
        //document.writeln(htmlMessage);
        $("#mensaje").html(htmlMessage);
}
function cerrar(){
    $("#mensaje").html("");
}

/////////////////////////////////////////////////
function deshabilitaCombo(identificador, valor){ 
    setProtegidoLista(identificador, valor =='true' ? true : false);
}
/////////////////////////////////////////////////
function setearPaginadoGrilla(navegacion,regPorPagina,idContador,idIndicador,idNumRegistros,idAvanceRetroceso,idPrimary){
    //alert("hdCONTADOR_PAGINAS: "+getValorCampo(idContador)+" hdIND_FIN_DATOS:"+ getValorCampo(idIndicador)+" hdNUM_REGISTROS: "+getValorCampo(idNumRegistros));
    if(getValorCampo(idContador)=="" || getValorCampo(idIndicador)=="" || getValorCampo(idNumRegistros)==""){
        return false; //no se permite el paginado sin esos datos
    }

    var contador=convertirEntero(getValorCampo(idContador));
    var primary=0;
    var avanceRetroceso="";
    var num_registros=0;
    
    //primera pagina
    if(navegacion == "I"){
        if(contador<=1){
            return false;//no se permite ir al inicio
        }
        contador=2;
        primary=regPorPagina+1;
        avanceRetroceso="R";
    }

    //siguiente pagina
    if(navegacion == "A"){
        if(getValorCampo(idIndicador) == "N"){
            primary=convertirEntero(contador)*regPorPagina;
        }else{
            return false; //no se permite avanzar
        }
        avanceRetroceso="A";
    }

   //anterior paginado
    if(navegacion == "R"){
        if(contador>1){
            if(getValorCampo(idIndicador) == "N" || getValorCampo(idIndicador) == "S"){
                primary=(convertirEntero(contador)-1)*regPorPagina+1;
            }else{
                return false; //no se permite retroceder
            }
        }else{
            return false; //no se permite retroceder
        }
        avanceRetroceso="R";
    }

    //ultima pagina
    if(navegacion == "F"){
        if(getValorCampo(idIndicador) == "N"){
            num_registros = convertirEntero(getValorCampo(idNumRegistros));
            primary=(convertirEntero(num_registros/regPorPagina))*regPorPagina;
            if(primary==num_registros){
                primary=primary-regPorPagina;
            }
            if((num_registros%regPorPagina)==0){
                contador=convertirEntero(num_registros/regPorPagina)-1;
            }else{
                contador=convertirEntero(num_registros/regPorPagina);
            }
        }else{
            return false; //no se permite ir al final
        }
        avanceRetroceso="A";
    }

    setValorCampo(idAvanceRetroceso,avanceRetroceso);
    setValorCampo(idContador,contador);
    setValorCampo(idPrimary,primary);

    return true;
    //alert("avanceRetroceso: "+avanceRetroceso+" contador: "+contador+" primary:"+primary);
}

/******************************************************************************************************************
 * Trim       ,  limpia los caracters en blanco por la izquierda y derecha de la cadena
 * Izqdatrim  ,  limpia los caracters en blanco ala izquierda de la cadena
 * Dchatrim   ,  limpia los caracters en blanco a derecha de la cadena
 * ReplaceNBSP,  Sustituye los caracters en blanco propios de html nbsp (NON BREAKING SPACE) por espacios normales
 *
 *  PARAMETROS:
 *              s    -> cadena caracteres a modificar.
 *******************************************************************************************************************/

function Trim(s) 
{
    var res = Dchatrim(Izqdatrim(s));
    if (res== " ") res = "";
    return res;    
}

function Izqdatrim(s) 
{
    return s.replace( /^\s*/, "" );
}

function Dchatrim(s) 
{
    return s.replace( /\s*$/, "" );
}

function ReplaceNBSP(sStr)
{
    return ( Trim(xreplace(sStr,String.fromCharCode(160),  String.fromCharCode(32))) );
}

/******************************************************************************************************************
 * xreplace,  reemplaza todas las ocurrencias de un carater pasado por otro tambien pasado por parametro.
 *
 *  PARAMETROS:
 *              sCadena    -> cadena caracteres a modificar.
 *              cCarAntig  -> caracter antiguo a buscar y cambiar.
 *              cCarNuevo  -> nuevo caracter que se reemplazara en la cadena.
 *******************************************************************************************************************/

function xreplace (sCadena, cCarAntig, cCarNuevo )
{
    var temp = sCadena;
    
    var i = temp.indexOf(cCarAntig);
    
    while(i > -1)
    {
            // sustituye el caracter
            //
            temp = temp.replace(cCarAntig, cCarNuevo);
            
            // recupera la siguiente posicion del caracter a sustituir
            //
            i = temp.indexOf(cCarAntig);
    }
    
    return temp;
}

function setTrimCampos(){
    $("input, textarea").each(function(i){$(this).val($.trim($(this).val()));});
}

function maxlengthTextArea(cadena, TP_DATO, event, size){
    var key = event.keyCode || event.charCode;

    if( key == 8 || key == 46 )
        return true;

    if(cadena.length>size){return false;}else{ return doKeyPress(TP_DATO, event);}
}

function resetEstiloGrilla(idTabla){
    var filaTabla=0;
    var size=idTabla.length;

    $("#TABLA_"+idTabla+" tbody tr").each(function(){
        if($(this).attr("id").substring(0,size)==idTabla){
            $(this).removeClass();
            if(filaTabla%2==0){
                $(this).addClass("Pijama1");
            }else{
                $(this).addClass("Pijama2");
            }
            filaTabla++;
        }
    });
}

function obtenerFechaFormato(fecha){
    return fecha.substring(6,10)+"-"+fecha.substring(3,5)+"-"+fecha.substring(0,2);
}

function cortaAccionPrueba(accion){
    var accionEjecutar = html_entity_decode(accion);
    var dato = $.trim(accionEjecutar);

    return dato.substring(3,dato.length);
}

function columnLengthFecha(dato){
    var fechaDato = html_entity_decode(dato);
    
    if(fechaDato!=""){
        var fecha=$.trim(fechaDato); //yyyy-mm-dd
        if(fecha==""){
            return "";
        }
        var dia=fecha.substring(8,10);
        var mes=fecha.substring(5,7);
        var ano=fecha.substring(0,4);

        if(dia=="" || mes=="" || ano == ""){
            return "";
        }

        return (dia +"-"+mes+"-"+ano);
    }
    return dato.substring(0,10);
}

function columnValidate( dato ){
    return Trim(html_entity_decode(dato));
}

function columnLength60(dato){
    var ndato = html_entity_decode(dato);
    return ndato.substring(0,60);
}

function columnLength( dato , longitud){
    var ndato = html_entity_decode(dato);
    return ndato.substring(0, longitud);
}

function trimColumnaGrilla(valueCol){
    return Trim(html_entity_decode(valueCol));
}

function getfechaActual(){
    var fechahoysys = new Date();
    return fechahoysys;
}

function addDelDiaFecha(fecha,ndias,addDel){ //fecha en formato dd-mm-yyyy, dd/mm/yyyy
    var fechaModificada = parseFechaToDate(fecha);
    if(addDel=="add"){
        fechaModificada.setTime(fechaModificada.getTime()+(24*60*60*1000)*ndias);
    }
    if(addDel=="del"){
        fechaModificada.setTime(fechaModificada.getTime()-(24*60*60*1000)*ndias);
    }
    return fechaModificada;
}

function parseFechaToDate(fecha){ //fecha en formato dd-mm-yyyy, dd/mm/yyyy
    var fechaDate=new Date(convertirEntero(fecha.substring(6,10)),convertirEntero(fecha.substring(3,5))-1,convertirEntero(fecha.substring(0,2)));
    return fechaDate;
}

function parseDateToCadecaFecha(objDateDecha){ //devuelve al formato dd-mm-yyyy
    var mes=objDateDecha.getMonth()+1;
    var dia=objDateDecha.getDate();
    var cadenaFecha=(dia<10?'0'+dia:dia)+"-"+(mes<10?'0'+mes:mes)+"-"+objDateDecha.getFullYear();
    return cadenaFecha;
}

function comparaFechas(fecha1, fecha2){ //fecha en formato dd-mm-yyyy, dd/mm/yyyy
    /* 
        TRUE: si fecha1 es mayor a fecha 2
        FALSE: si fecha1 es menor o igual a fecha2
    */
    var xMonth=fecha1.substring(3, 5);
    var xDay=fecha1.substring(0, 2);
    var xYear=fecha1.substring(6,10);
    var yMonth=fecha2.substring(3, 5);
    var yDay=fecha2.substring(0, 2);
    var yYear=fecha2.substring(6,10);

    if (xYear == yYear && xMonth == yMonth && xDay == yDay){
        return(false)
    }

    if (xYear> yYear){
        return(true)
    }
    else{
      if (xYear == yYear){ 
        if (xMonth> yMonth){
            return(true)
        }
        else{ 
          if (xMonth == yMonth){
            if (xDay> yDay)
              return(true);
            else
              return(false);
          }
          else
            return(false);
        }
      }
      else
        return(false);
    }
}

function columnTrim( dato ){
    return $.trim(dato);
}

function columnLengthDes( dato ){
    // var ndato = html_entity_decode(dato);
    // return ndato.substring(0,20);    
    return columnLength( dato, 20 );
}

function columnLength5( dato ){
    return columnLength( dato, 5 ); 
}

function columnLength10( dato ){
    return columnLength( dato, 10 ); 
}

function columnLength12( dato ){
    return columnLength( dato, 12); 
}

function columnLength15( dato ){
    return columnLength( dato, 15 ); 
}

function columnLength16( dato ){
    return columnLength( dato, 16 ); 
}

function columnLength6( dato ){
    return columnLength( dato, 6 ); 
}

function columnLength( dato, longitud){
    var ndato = $.trim(html_entity_decode(dato));
    return ndato.substring(0,longitud);  
}

function completarCeros(basicStr, numChars, type)
{
    var lon=basicStr.length;
    var faltante="";
    if(type == 0)//numerico a la izquierda con ceros
    {
        if(basicStr.length<numChars)
        {
            for(var i=0;i<numChars-basicStr.length;i++)
            {
                faltante += "0";
            }
            basicStr = faltante + "" + basicStr;
        }
    }
    else if(type == 1)//texto a la derecha con espacios
    {
        if(basicStr.length<numChars)
        {
            for(var i=0;i<numChars-basicStr.length;i++)
            {
                faltante += " ";
            }
            basicStr = basicStr + "" + faltante;
        }
    }
    else if(type == 2)//numerico a la derecha con ceros
    {
        if(basicStr.length<numChars)
        {
            for(var i=0;i<numChars-basicStr.length;i++)
            {
                faltante += "0";
            }
            basicStr = basicStr + "" + faltante;
        }
    }   
    return basicStr;
}

function codigoCharacter(codigo){return (codigo=="") ? "" : completarCeros(codigo,2,0); }

function comparaFechasCustom(fecha1, fecha2){ 
    var xMonth=fecha1.substring(3, 5);
    var xDay=fecha1.substring(0, 2);
    var xYear=fecha1.substring(6,10);
    var yMonth=fecha2.substring(3, 5);
    var yDay=fecha2.substring(0, 2);
    var yYear=fecha2.substring(6,10);

    if (xYear == yYear && xMonth == yMonth && xDay == yDay){
        return 0;
    }

    if (xYear> yYear){
        return 1;
    }else{
      if (xYear == yYear){ 
        if (xMonth> yMonth){
            return 1;
        }else{ 
          if (xMonth == yMonth){
            if (xDay> yDay)
              return 1;
            else
              return 0;
          }else{
            return 0;
          }
        }
     }else{
        return 0;
      }
    }
}

function getToDay(){
    var hoy = new Date();
    var dia = hoy.getDate();
    var mes = hoy.getMonth() +1;
    var anio = hoy.getFullYear();
    return dia+"-"+mes+"-"+anio;
}

function convertirEntero(cadena) {
    return parseInt(cadena,10);
}

function isNumMayorIgualQue( a, b ){
    var a1 = changeForValide(a);
    var b1 = changeForValide(b);
    if (d1>=d2){return true;}else{return false;}
}

function changeForValide(o){
    o = $.trim(o);
    o = o.replace(".","");
    o = o.replace(",","."); 
    return o;
}

function setTooltipColumnas(idTabla, columnasToolTip, grilla, ALIASKEON){
    var columna=0, caracteres=0, nrofila=0, controlColTooltip=0;
    var size=idTabla.length;
    var filas=new Array();
    var columnas=columnasToolTip.split(",");
    var celda="", width="";
    var nroColTooltip = 0;
    var html_image="";
    
    $("#TABLA_"+idTabla+" tbody tr").each(function(){
        if($(this).attr("id").substring(0,size)==idTabla){
            columna=0;
            controlColTooltip=0;
            nroColTooltip = convertirEntero(columnas[controlColTooltip]);
            $("#"+$(this).attr("id")+" td").each(function(){
                if(columna==nroColTooltip){
                    celda=html_entity_decode(getDatoArrayTE(idTabla, nrofila, columna));
                    if(celda!=""){celda=columnTrim(celda);}
                    width=$(this).css("width");
                    width=width.substring(0, width.length-2);
                    caracteres = Math.floor(convertirEntero(width)/8);
                    if(caracteres>0){
                        if(celda.length>caracteres){
                            $(this).text("");
                            html_image = '<table align="left" border="0" cellspacing="0" cellpadding="0" style="width:100%;">'+
                                            '<tr><td align="left">'+celda.substring(0,caracteres-3)+'</td>'+
                                                '<td align="right"><img align="middle" src="/'+ALIASKEON+'/images/derecha.gif" '+
                                                                    ' onmouseover="verTooltipImage($(this),'+convertirEntero(width*1.5)+',\'';
                            if(columnas.length==1){
                                html_image = html_image+grilla[nrofila];
                                //alert(grilla[nrofila]);
                            }else{
                                html_image = html_image+grilla[controlColTooltip][nrofila];
                                //alert(grilla[nrofila][controlColTooltip]);
                            }
                            html_image = html_image + '\');" onmouseout="ocultarTooltipImage();" alt="derecha.gif" value="'+celda+'"/></td></tr></table>';
                            $(this).html(html_image);
                        }
                    }
                    controlColTooltip++;
                    if(controlColTooltip<columnas.length){
                        nroColTooltip = convertirEntero(columnas[controlColTooltip]);
                    }
                }
                columna++;
            });
            nrofila++;
        }
    });
}
function verTooltipImage(objeto,ancho, valor){
    var html_tooltip='<div style="width:'+ancho+'px; left:'+(objeto.offset().left+10)+'px;'+
                                  'top:'+(objeto.offset().top+5)+'px; position:absolute; overflow:hidden;'+
                                  'background-color:white; border:1px solid #000000; z-index:3000;">'+
                                valor+
                      '</div>';
    $("#tooltipcolumna").html(html_tooltip);
    $("#tooltipcolumna").show("fast");
}
function ocultarTooltipImage(){
    $("#tooltipcolumna").hide();
    $("#tooltipcolumna").html("");
}

function resetPaginadoGrilla(ALIASKEON, id){
    var idImg = (id==undefined || id==null)?"":id;

    $("#btnInicio"+idImg).attr("src","/"+ALIASKEON+"/images/Izq1off.gif");
    $("#btnAnterior"+idImg).attr("src","/"+ALIASKEON+"/images/Izq2off.gif");
    $("#btnSiguiente"+idImg).attr("src","/"+ALIASKEON+"/images/Dere2off.gif");
    $("#btnFin"+idImg).attr("src","/"+ALIASKEON+"/images/Dere1off.gif");
}

function quitarScrollHorizontal(idTabla){
    $("#TABLA_PRUEBADivCuerpo_"+idTabla).css({
        "width": "110",
        "overflow-x": "hidden"
    });
}

function setTextoBotonAtajo(idBoton, html, atajo){
    $("#"+idBoton).html(html);
    $("#"+idBoton).attr("accesskey",atajo);
}

function validarGrillaVacia(idTabla){
    var filaTabla=0;
    var size=idTabla.length;
    var contador=0;

    $("#TABLA_"+idTabla+" tbody tr").each(function(){
        if($(this).attr("id").substring(0,size)==idTabla){
            contador++;
        }
    });

    if(contador>0){
        return false;
    }
    return true;
}

function validarBusquedaVaciosInvalidos(camposValidos, camposInvalidos){
    var totalVacios=0;
    for (var i = 0; i < camposValidos.length; i++) {
        if(camposValidos[i]==""){
            totalVacios++;
        }
    }
    if(totalVacios==camposValidos.length){
        for (var i = 0; i < camposInvalidos.length; i++) {
            if(camposInvalidos[i]!=""){
                return 1;//ha ingresado campos invalidos con criterios validos vacíos
            }
        }
        return 2; //no ha ingresado criterios de busqueda
    }
    
    /*for (var i = 0; i < camposInvalidos.length; i++) {
        if(camposInvalidos[i]!=""){
            return 1; //ha ingresado campos invalidos
        }
    }*/

    return 3; //todo esta correcto
}

function levantarPopupICSE(arrayParametros, sPropiedades, titulo){
    var LanzaUrl = '/icse_pe_web/icse_pe_web/servlet/ServletOperacionWeb';
    LanzaUrl += getParametros(arrayParametros);
    lanzarVentanaModalTitulo(LanzaUrl,"",sPropiedades,titulo,true);
}